﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Pay.DTO;
using Pay.DTO.htl;

namespace Pay.IService {
	public interface IHtlMallService {
        /// <summary>
        /// 商品数据获取
        /// </summary>
        /// <param name="htl_product"></param>
        /// <returns></returns>
        string PullProduct(htl_product_req htl_product); 
        /// <summary>
        /// 推送订单
        /// </summary>
        /// <returns></returns>
        Task<int> PushOrder();
        /// <summary>
        /// 推送掉单
        /// </summary>
        /// <param name="order_no"></param>
        /// <returns></returns>
        Task<int> PushOrderData(string order_no);
        /// <summary>
        /// 物流查询
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        Task<shipping_method_info> GetShippingInfo(htl_req_base req);
        /// <summary>
        /// 商品数据查询
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        Task<products_list> GetProducts(htl_product_search_req product);
        /// <summary>
        /// 查询物流的订单信息
        /// </summary>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        Task<htl_logistics_res> GetLogistics(string orderNo);
        /// <summary>
        /// 运费查询
        /// </summary>
        /// <param name="freight"></param>
        /// <returns></returns>
        Task<express_list> GetFreight(htl_freight_req freight);
        /// <summary>
        /// 仓储费查询
        /// </summary>
        /// <param name="store_expenses"></param>
        /// <returns></returns>
        Task<store_expenses_list> GetStoreExpenses(htl_store_expenses_req store_expenses);
        /// <summary>
        /// 订单状态查询
        /// </summary>
        /// <returns></returns>
        Task<string> GetOrderStatus();
        /// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        Task<orders_info> GetOrdersInfo(htl_order_search_req order);
        /// <summary>
        /// 订单取消
        /// </summary>
        /// <param name="orderNo"></param>
        /// <param name="remark"></param>
        /// <returns></returns>
        Task<htl_res_base> OrderCancel(string orderNo, string remark);
        /// <summary>
        /// 解析推送商品xml数据
        /// </summary>
        void AnalysisProducts();
        int UpdateCostPrice();
    }
}
